/*
 * PagEventosValidar.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import srac.controleatividades.cci.CtrlAtividade;
import srac.controleatividades.cci.CtrlInterno;
import srac.controleatividades.cdp.AtividadeComplementar;
import srac.controleatividades.cdp.StatusAtividadeComplementar;
import srac.controleatividades.cdp.TipoAtividade;
import srac.controleatividades.cdp.TipoUsuario;
import srac.controleatividades.cdp.Usuario;

public class PagEventosValidar extends GenericForwardComposer {

    private CtrlAtividade ctrlAtividade = CtrlAtividade.getInstance();
    private CtrlInterno ctrlInterno = CtrlInterno.getInstance();
    private Window winEventosValidar;
    private Listbox listTipoAtividades;
    private Menuitem validar;
    private Div boxInformacao;
    private Label msg;
    private Integer tam;

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        ctrlAtividade.setPagEventosValidar(this);
        while (listTipoAtividades.getItemCount() > 0) {
            listTipoAtividades.removeItemAt(0);
        }

        List<TipoAtividade> tipoAtividades = ctrlInterno.obterTipoAtividades(); //Obtem todos os tipos de atividades
        if (tipoAtividades != null) {
            for (int i = 0; i < tipoAtividades.size(); i++) {

                TipoAtividade t = tipoAtividades.get(i);
                List<AtividadeComplementar> atividades = ctrlAtividade.obterAtividadesComplementaresValidacao(t); //Obtem todas as atividades que 
                tam = atividades.size();
                if (tam > 0) {
                    Integer tot = 0;
                    for (AtividadeComplementar ac : atividades) {
                        if(ac.getStatusAtividadeComplementar().equals(StatusAtividadeComplementar.EM_ANALISE))
                        {
                            tot++;
                        }
                    }
                    Listitem linha = new Listitem(tipoAtividades.get(i).getCategoria().toString(), t);
                    linha.appendChild(new Listcell(tipoAtividades.get(i).toString()));
                    linha.appendChild(new Listcell(tam.toString()));
                    linha.appendChild(new Listcell(tot.toString()));
                    linha.setParent(listTipoAtividades);
                }
            }
        } else {
            validar.setDisabled(true);
        }
    }
    
    public void onCreate$winEventosValidar(Event event) {
        Usuario u = (Usuario) Executions.getCurrent().getSession().getAttribute("usuario");
        
        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (u == null) {
            Executions.sendRedirect("/");
            winEventosValidar.detach();
        }
        else{
            if (u.getTipo() != TipoUsuario.PEDAGOGO) { //Verifica se o usuário é um pedagogo
                Executions.sendRedirect("/");
                winEventosValidar.detach();
            }
        }
    }


    public void onClick$validar(Event event) {
        Listitem listitem = listTipoAtividades.getSelectedItem(); //Pega 
        if (listitem != null) {
            TipoAtividade t = listitem.getValue();
            ctrlAtividade.abrirFormularioValidar(t);
        }
    }

    public void setMensagemAviso(String tipo, String mensagem) {
        boxInformacao.setClass(tipo);
        boxInformacao.setVisible(true);
        msg.setValue(mensagem);
    }

    public void onClick$boxInformacao(Event event) {
        boxInformacao.setVisible(false);
    }
    
    public void refresh()
    {
        while (listTipoAtividades.getItemCount() > 0) {
            listTipoAtividades.removeItemAt(0);
        }

        List<TipoAtividade> tipoAtividades = ctrlInterno.obterTipoAtividades(); //Obtem todos os tipos de atividades
        if (tipoAtividades != null) {
            for (int i = 0; i < tipoAtividades.size(); i++) {

                TipoAtividade t = tipoAtividades.get(i);
                List<AtividadeComplementar> atividades = ctrlAtividade.obterAtividadesComplementaresValidacao(t); //Obtem todas as atividades que 
                tam = atividades.size();
                if (tam > 0) {
                    Integer tot = 0;
                    for (AtividadeComplementar ac : atividades) {
                        if(ac.getStatusAtividadeComplementar().equals(StatusAtividadeComplementar.EM_ANALISE))
                        {
                            tot++;
                        }
                    }
                    Listitem linha = new Listitem(tipoAtividades.get(i).getCategoria().toString(), t);
                    linha.appendChild(new Listcell(tipoAtividades.get(i).toString()));
                    linha.appendChild(new Listcell(tam.toString()));
                    linha.appendChild(new Listcell(tot.toString()));
                    linha.setParent(listTipoAtividades);
                }
            }
        } else {
            validar.setDisabled(true);
        }
    }
}
